/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import model.Familia;
import model.ProdutoMateriaPrima;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import util.HibernateUtil;

/**
 *
 * @author Sandro
 */
public class ProdutoMateriaPrimaDAO {

    public ProdutoMateriaPrimaDAO() {

        session = HibernateUtil.getSessionFactory().openSession();
        
    }
    
    private Session session;
       
    public void inserir(ProdutoMateriaPrima pmp)
    {
        
        Transaction t = session.beginTransaction();
        session.save(pmp);
        t.commit();
        
    }
    public List<ProdutoMateriaPrima> findAll()
    {
    
        return session.createQuery("from ProdutoMateriaPrima").list();
    
    }
    
    public ProdutoMateriaPrima findById(int id)
    {
    
        return (ProdutoMateriaPrima) session.load(ProdutoMateriaPrima.class, id);
        
    }
    
    public void update(ProdutoMateriaPrima pmp){
        
        Transaction t = session.beginTransaction();
        session.merge(pmp);
        t.commit();       
        
    }
    
    public List<ProdutoMateriaPrima> findMatPrimadoProduto(String codProduto){
        Query que = session.createQuery("From ProdutoMateriaPrima where procodigo = "+codProduto);
        return que.list();
    }
    
    public List<ProdutoMateriaPrima> findMatPrimadoProdutoOrdenadoNivel(String codProduto){
        //Criteria crit = session.createCriteria(ProdutoMateriaPrima.class);
        //crit.add(Restrictions.eq("procodigo", codProduto));
        //crit.addOrder(Order.asc("promatnivel"));
       // List<ProdutoMateriaPrima> resultado = crit.list();

        Query que = session.createQuery("From ProdutoMateriaPrima where procodigo = '"+codProduto+"' order by promatnivel asc");
        return que.list();
    }
    
    public List<ProdutoMateriaPrima> findNiveis(String codProduto, int sequencial){
        /*
        Criteria crit = session.createCriteria(ProdutoMateriaPrima.class);
        crit.add(Restrictions.eq("procodigo", codProduto));
        crit.add(Restrictions.eq("propainivel", sequencial));
        crit.addOrder(Order.desc("promatnivel"));
        List resultado = crit.list();
    */
        //Query que = session.createQuery("From ProdutoMateriaPrima PMP WHERE PMP.procodigo = :produtoId and PMP.propainivel = :pai ORDER BY PMP.promatnivel DESC");
        
        Query que = session.createQuery("From ProdutoMateriaPrima where procodigo = '"+codProduto+"' and propainivel = "+sequencial+" order by promatnivel desc");
        return que.list();
    }

}


